// 工具类的函数
// 所有代码通用性强的 工具或者函数或者类 可以放在 util
// 针对项目里公共的内容 可以放在 common文件夹里
const path = require("path");
// 1.安装 formidable 模块

const formidable = require("formidable"); // 2.引入 formidable 模块

// 3.实例化且配置  formidable 模块
let form = new formidable.IncomingForm({
  uploadDir: path.resolve(process.cwd(), "./static"), //将接收到的前端静态资源存放到static目录中(上传文件存储的路径)
  keepExtensions: true, //// 保持之前上传文件的后缀名称
});
// 4.通过 formidable 格式化 数据和文件；
module.exports = {
  uploadimg(req) {
    // 上传文件的函数，返还一个promise对象
    return new Promise((resolve, reject) => {
      form.parse(req, (err, fields, files) => {
        if (err) {
          reject(err);
          return console.log(err);
        } // 如果有错误 就抛出错误
        // 如果没有错误就获取 字段信息 把 文件的路径地址添加到数据库
        // console.log(fields, files);
        // 通过promise返还 字段，文件的路径
        let newFilename = files.myimg.newFilename; //files是一个文件资源对象，里面的myimg是前端借助 FormData模拟表单时自定义的属性
        resolve({ ...fields, imgurl: newFilename });
      });
    });
  },
};
